using System;
using System.Windows.Forms;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;

namespace Renamer
{
    class MainClass
    {
        [STAThread]
        public static void Main(string[] args)
        {
            Console.WriteLine("Starting Photo Renamer");
            OpenFileDialog dlgOpen = new OpenFileDialog();
            dlgOpen.Multiselect = true;
            if (dlgOpen.ShowDialog() == DialogResult.OK)
            {
                foreach (string s in dlgOpen.FileNames)
                {
                    try
                    {
                        Bitmap myPhoto = new Bitmap(s);

                        PropertyItem prop = myPhoto.GetPropertyItem(Convert.ToInt32(36867));
                        string sPropValue = System.Text.Encoding.UTF8.GetString(prop.Value);

                        // Снимаем блокировку с файла
                        myPhoto.Dispose();

                        // Заменяем двоеточие и пробел в дате на знаки подчёркивания
                        sPropValue = sPropValue.Replace(":", "_");
                        sPropValue = sPropValue.Replace(" ", "_");

                        // Добавляем в начало названия файла '_'
                        string target = s.Insert(s.LastIndexOf('\\') + 1, "_");

                        // Добавляем в начало названия файла дату создания yy:mm:dd hh:mm:ss
                        target = target.Insert(target.LastIndexOf('\\') + 1, sPropValue.Substring(0, sPropValue.Length - 1));
                        target.Replace(":", "_");
                        Console.WriteLine(s + " => " + target + '\n');
                        // Переименовываем файл
                        File.Move(s, target);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("***********");
                        Console.WriteLine("An exception oocured");
                        Console.WriteLine(ex.Message);
                        Console.WriteLine("***********");
                    }
                }
            }
            Console.WriteLine("Work is done");
            Console.ReadLine();
        }
    }
}